//
//  book.c
//  Book
//
//  Created by bg on 2017/11/16.
//  Copyright © 2017年 ylp. All rights reserved.
//

#include "book.h"
/**
 add a book;
 */
void add_book(){
    struct Sbook book;
//    接收键盘值
    double price = 0.0;
    int stock = 0;
    char bookName[30] = "";
    char bookIsbn[13] = "";         // isbn
    char bookAuthor[20] = ""; // 作者
    char publishingHouse[20] = "TsinghuaPress"; // 出版社
    do {
        system("clear");
        printf("\n\t\t\t〓〓〓〓〓图书管理系统〓〓〓〓〓\n\n");
        printf("请输入图书名称:");
        scanf("%s",bookName);
        printf("请输入图书作者:");
        scanf("%s",bookAuthor);
        printf("请输入图书ISBN号:");
        scanf("%s",bookIsbn);
        printf("请输入出版社:");
        scanf("%s",publishingHouse);
        printf("请输入价格:");
        //scanf() 发现 input buffer 中的内容与格式不匹配，会将此内容留在 input buffer 中， 被while ((ch = getchar()) != '\n') 读取
        scanf("%lf",&price);
        printf("请输入库存:");
        scanf("%d",&stock);
        printf("\n");
    }while(!verify_book_elements_data(bookName, bookAuthor, bookIsbn, publishingHouse, price, stock));
    
    strcpy(book.book_author, bookAuthor);
    strcpy(book.book_name, bookName);
    strcpy(book.book_isbn, bookIsbn);
    strcpy(book.publishing_house, publishingHouse);
    book.book_price = price;
    book.stock = stock;
}
//C99标准里面，又定义了bool类型变量。这时，只要引入头文件 <stdbool.h>
//数据正确性校验与默认值填写。当然可以把每一步输入写成一个函数，那个值输错了就让用户重新输入那一个值而不是，全部重新输入，由于时间关系我选择重新输入。
bool verify_book_elements_data(char name[30],char author[20],char isbn[13],char publish[20],double price,int stock){
    if (price <= 0) {
        printf("你输入的价格有误!\n");
        return false;
    }
    if (!(stock > 0)) {
        printf("你输入的库存有误!\n");
        return false;
    }
    if (strlen(name) == 0) {
        printf("你输入的书名有误!\n");
        return false;
    }
    if (strlen(author) == 0) {
        printf("你输入的作者有误!\n");
        return false;
    }
    if (strlen(publish) == 0) {
        printf("你输入的出版社有误!\n");
        return false;
    }
    if (strlen(isbn) == 0) {
        printf("你输入的isbn有误!\n");
        return false;
    }
    return true;
}
bool verify_book_data(struct Sbook sbook){
    if (sbook.book_price < 0) {
        return false;
    }
    if (!(sbook.stock > 0)) {
        return false;
    }
    if (strlen(sbook.book_name) == 0) {
        return false;
        /// 当没有strlen方法可以使用时，请遍历book_name中的每个char字符是否为空字符
//        for (int i = 0; i < 30; i++) {
//            if (sbook.book_name[i] == 0) {
//                break;
//            }
//            if (i == 29) {
//                return false;
//            }
//        }
    }
    if (strlen(sbook.book_author) == 0) {
        return false;
    }
    if (strlen(sbook.publishing_house) == 0) {
        return false;
    }
    if (strlen(sbook.book_isbn) == 0) {
        return false;
    }
    return true;
}
/**判断是否有重复的isbn*  第一个是包含有图书结构体的数组的指针，其实它是指向第一个元素的指针*/
bool check_repeat(struct Sbook *pbookLibrary,char isbn[13]) {
//    (*book).book_author;
//    for (; <#condition#>; <#increment#>) {
//        <#statements#>
//    }
 
    return false;
}

